package com.ynkbny.service.impl;

import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ynkbny.domain.ConversionCoefficient;
import com.ynkbny.domain.dto.ConversionCoefficientDTO;
import com.ynkbny.mapper.ConversionCoefficientMapper;
import com.ynkbny.service.ConversionCoefficientService;
import com.ynkbny.service.TEpUploadTimeService;
import com.ynkbny.service.outsideinterface.MyClient;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;
import java.util.HashMap;
import java.util.List;
import java.util.Map;


/**
 * 能源结构表/折标系数表-表服务实现类
 *
 * @author : juzipi123
 * @date : 2023-8-2
 */
@Service
public class ConversionCoefficientServiceImpl extends ServiceImpl<ConversionCoefficientMapper, ConversionCoefficient> implements ConversionCoefficientService {

    @Resource
    private ConversionCoefficientMapper mapper;

    @Resource
    private MyClient myClient;

    @Resource
    private TEpUploadTimeService uploadTimeService;

    /**
     * 通过 code 查询数据
     *
     * @author : juzipi123
     * @param code 主键
     * @return 结果
     */
    @Override
    public ConversionCoefficientDTO queryByCode(String code) {
        Map<String, String> map = new HashMap<>();
        map.put("code",code);
        return mapper.query(map);
    }

    /**
     * 调用接口更新表数据
     *
     * @author : YY
     * @param enterpriseCode 统一社会信用代码（该接口是提供给任意企业使用的）
     * @return boolean
     *
     * 1：行政区划代码
     * 2：行业编码
     * 3：生产工序编码
     * 4：工序单元编码
     * 5：用能设备编码
     * 6：数据采集来源类型编码
     * 7：采集数据类型编码
     * 8：能源品种编码计量单位及精度
     * 9：耗能工质编码计量单位及精度
     * 10：非能源类产品及计量单位(包含平台预定义编码及企业自定义编码)
     * 11：能效指标编码及计量单位
     * 12：经营指标编码及计量单位
     * 13：其它数据编码
     * 14：能源用途编码
     * 15：计量器具编码
     * 16：企业类型编码
     * 17：重点用能设备分类编码
     */
    @Override
    public boolean dataDownload(String enterpriseCode) {
        String token = uploadTimeService.getToken(enterpriseCode);
        JSONObject jsonObject = myClient.dataDownload(token, enterpriseCode, "8");
        JSONArray jsonArray = jsonObject.getJSONObject("data").getJSONArray("EnergyTypeUnitCollectCodes");
        List<ConversionCoefficient> javaList = jsonArray.toJavaList(ConversionCoefficient.class);
        boolean updateBatch = this.saveOrUpdateBatch(javaList);
        return updateBatch;
    }
}